$(document).ready(function() {
	
	//Pessoa
	
	//wizard
	var wizardObj = wizardFileUpdate("cadastro","pessoas/bancodetalentos/update/savefile",false);
	
	//mascaras
	$("#cpf").mask("999.999.999-99", {placeholder:"_"});
	$("#cepResidencial").mask("99.999-999", {placeholder:"_"});
	
	//combo box
	loadToComboBox("#estadoNascimento",estadoDataSource,"uf");
	loadToComboBox("#estadoExpedidor",estadoDataSource,"uf");
	loadToComboBox("#estadoResidencial",estadoDataSource,"uf");
	loadToComboBox("#ramoSegurancaPublica",ramoSegurancaPublicaDataSource,"nome");
	loadToComboBox2("#banco",bancoDataSource,"numero","nome");

	//combobox dependentes
	$("#estadoResidencial").change(function(event){ loadToSubcombo(event,'#municipioResidencial','municipios/combo/nome?class=br.com.educa.modelo.publico.Municipio&methodName=findMunicipiosByEstado&estado=','nome'); });
	$("#estadoNascimento").change(function(event){ loadToSubcombo(event,'#naturalidade','municipios/combo/nome?class=br.com.educa.modelo.publico.Municipio&methodName=findMunicipiosByEstado&estado=','nome'); });
	$("#ramoSegurancaPublica").change(function(event){ loadToSubcombo(event,'#graduacaoCargo','graduacaocargoes/combo/nome?class=br.com.educa.modelo.publico.GraduacaoCargo&methodName=findGraduacaoCargoesByRamoSegurancaPublica&ramoSegurancaPublica=','nome'); });
	
	//datepickers
	datePicker("dataNascimento");
	datePicker("dataIngresso");
	datePicker("dataAposentadoria");
	
	///criando os editores de texto
    $('textarea').wysiwyg();
	
    //tooltip
	tooltip('formacaoAcademicaTooTips','Atenção, não basta apenas preecher os campos, é necessário clicar no botão + (Adicionar) para incluir!');
	tooltip('experienciaProfissionalToolTip','Atenção, não basta apenas preecher os campos, é necessário clicar no botão + (Adicionar) para incluir!');
	tooltip('publicacaoCientificaToolTip','Atenção, não basta apenas preecher os campos, é necessário clicar no botão + (Adicionar) para incluir!');
    //-------------------------------------- //////////////////// ------------------------------
	
	
	//oneToMany ----> FormacaoAcademica

	//combo box
	loadToComboBox("#formacaoAcademicaPais",paisDataSource,"nome");

	//combobox dependentes
	$("#formacaoAcademicaPais").change(function(event){ loadToSubcombo(event,'#formacaoAcademicaEstado','estadoes/combo/uf?class=br.com.educa.modelo.publico.Estado&methodName=findEstadoesByPais&pais=','uf'); });
	$("#formacaoAcademicaEstado").change(function(event){ loadToSubcombo(event,'#formacaoAcademicaMunicipio','municipios/combo/nome?class=br.com.educa.modelo.publico.Municipio&methodName=findMunicipiosByEstado&estado=','nome'); });
	
	//datepickers
	datePicker("formacaoAcademicaTipoFormacaoAcademicaPeriodoIncial");
	datePicker("formacaoAcademicaTipoFormacaoAcademicaPeriodoFinal");
	
	
	var formacaoAcademicaAoColumns = [
//					{"sTitle": "Id", "mDataProp": "id", "bVisible": false, "sType": "numeric", "sDefaultContent":"" },
//					{"sTitle": "Versao", "mDataProp": "version", "bVisible": false, "sType": "numeric", "sDefaultContent":"" },
					{"sTitle": "Formação", "mDataProp": "tipoFormacaoAcademica", "sWidth": "45px", "bVisible": true, "sDefaultContent":"" },
					{"sTitle": "Curso", "mDataProp": "curso", "bVisible": true, "sDefaultContent":"" },
					{"sTitle": "Opções", "mDataProp": "htmlControl","bSortable": false, "bVisible": true, "sWidth": "45px","sDefaultContent":"", 
		  					   "fnRender": function ( oObj ) {
			  					   	if(oObj.aData.arquivo!=null && oObj.aData.arquivo.id != null){
										return  "<button type=\"button\" class=\"magnifierGlassDataGridBtnformacaoAcademicaDataGrid\" onclick=\"window.open('arquivoes/showdoc/"+oObj.aData.arquivo.id+"','_blank')\">Ver</button>"+
													 "<button type=\"button\" class=\"deletarBtnformacaoAcademicaDataGrid\" onclick=\"deletar(event,'formacaoAcademicaDataGrid')\">Deletar</button>";
			  					   	}else{
			  					   		return  "<button type=\"button\" class=\"deletarBtnformacaoAcademicaDataGrid\" onclick=\"deletar(event,'formacaoAcademicaDataGrid')\">Deletar</button>";
			  					   	}
		 					  }
				  	  }
	            ];
    var formacaoAcademicaAoColumnsStr = 	JSON.stringify(formacaoAcademicaAoColumns, function(key, val) {if (typeof val === 'function') { return val + '';} return val;});
	oneToManyFile("formacaoAcademicaDataGrid", formacaoAcademicaAoColumnsStr);
	$("#formacaoAcademicaAdicionarBtn").button({icons: {primary: "ui-icon-plusthick"}, text: false}).click(
	function(){
		adicionarDoFormFileParaDatagrid("formacaoAcademica","formacaoAcademicaDataGrid");
		FileAPI.emptyList();
		return false;
	});
	//-------------------------------------- //////////////////// ------------------------------
	
	//oneToMany ----> experienciaProfissional
	
	//combo box
	loadToComboBox("#experienciaProfissionalPais",paisDataSource,"nome");

	//combobox dependentes
	$("#experienciaProfissionalPais").change(function(event){ loadToSubcombo(event,'#experienciaProfissionalEstado','estadoes/combo/uf?class=br.com.educa.modelo.publico.Estado&methodName=findEstadoesByPais&pais=','uf'); });
	$("#experienciaProfissionalEstado").change(function(event){ loadToSubcombo(event,'#experienciaProfissionalMunicipio','municipios/combo/nome?class=br.com.educa.modelo.publico.Municipio&methodName=findMunicipiosByEstado&estado=','nome'); });

	//datepickers
	datePicker("experienciaProfissionalPeriodoIncio");
	datePicker("experienciaProfissionalPeriodoFim");
	
	var experienciaProfissionalAoColumns = [
//			              {"sTitle": "Id", "mDataProp": "id", "bVisible": false, "sType": "numeric", "sDefaultContent":"" },
//			              {"sTitle": "Versao", "mDataProp": "version", "bVisible": false, "sType": "numeric", "sDefaultContent":"" },
			              {"sTitle": "Empregador", "mDataProp": "empregador", "sWidth": "45px", "bVisible": true, "sDefaultContent":"" },
			              {"sTitle": "Período", "mDataProp": "periodo", "bVisible": true, "sDefaultContent":"",
			              "fnRender": function ( oObj ) { 
			              					var periodo = oObj.aData.periodoInicio + " até " + oObj.aData.periodoFim; 
			              					return  periodo;
		              				 }
          				   },
			              {"sTitle": "Função", "mDataProp": "funcao","sWidth": "45px", "bVisible": true, "sDefaultContent":"" }
		              ];
    //datagrid interna
	var experienciaProfissionalAoColumnsStr = 	JSON.stringify(experienciaProfissionalAoColumns, function(key, val) {if (typeof val === 'function') { return val + '';} return val;});              
	oneToMany("experienciaProfissionalDataGrid", experienciaProfissionalAoColumnsStr);
	$("#experienciaProfissionalAdicionarBtn").button({icons: {primary: "ui-icon-plusthick"}, text: false}).click(
	function(){
		adicionarDoFormParaDatagrid("experienciaProfissional", "experienciaProfissionalDataGrid");
		return false;
	});
	//-------------------------------------- //////////////////// ------------------------------
	
	//oneToMany ----> publicacaoCientifica
	
	//tooltip
	tooltip('abntToolTip','Atenção, é orientado que a referência seja incluída no formato ABNT!');
	
	var publicacaoCientificaAoColumns = [
//			              {"sTitle": "Id", "mDataProp": "id", "bVisible": false, "sType": "numeric", "sDefaultContent":"" },
//			              {"sTitle": "Versao", "mDataProp": "version", "bVisible": false, "sType": "numeric", "sDefaultContent":"" },
			              {"sTitle": "Tipo", "mDataProp": "tipoProducaoCientifica", "sWidth": "45px", "bVisible": true, "sDefaultContent":"" },
			              {"sTitle": "ABNT", "mDataProp": "referencia", "bVisible": true, "sDefaultContent":""}
		              ];
    //datagrid interna
	var publicacaoCientificaAoColumnsStr = 	JSON.stringify(publicacaoCientificaAoColumns, function(key, val) {if (typeof val === 'function') { return val + '';} return val;});              
	oneToMany("publicacaoCientificaDataGrid", publicacaoCientificaAoColumnsStr);
	$("#publicacaoCientificaAdicionarBtn").button({icons: {primary: "ui-icon-plusthick"}, text: false}).click(
	function(){
		adicionarDoFormParaDatagrid("publicacaoCientifica", "publicacaoCientificaDataGrid");
		return false;
	});
	//-------------------------------------- //////////////////// ------------------------------
	
	
	//oneToMany ----> idiomas
	
	//combo box
	loadToComboBox("#idiomasLingua",linguaDataSource,"nome");
	
	var idiomasAoColumns = [
//			              {"sTitle": "Id", "mDataProp": "id", "bVisible": false, "sType": "numeric", "sDefaultContent":"" },
//			              {"sTitle": "Versao", "mDataProp": "version", "bVisible": false, "sType": "numeric", "sDefaultContent":"" },
			              {"sTitle": "Lingua", "mDataProp": "lingua.nome", "sWidth": "45px", "bVisible": true, "sDefaultContent":"" },
			              {"sTitle": "Entendimento", "mDataProp": "entendimento", "sWidth": "45px", "bVisible": true, "sDefaultContent":"" },
			              {"sTitle": "Fala", "mDataProp": "fala", "sWidth": "45px", "bVisible": true, "sDefaultContent":"" },
			              {"sTitle": "Leitura", "mDataProp": "leitura", "sWidth": "45px", "bVisible": true, "sDefaultContent":"" },
			              {"sTitle": "Escrita", "mDataProp": "escrita", "sWidth": "45px", "bVisible": true, "sDefaultContent":"" }
		              ];
    //datagrid interna
	var idiomasAoColumnsStr = 	JSON.stringify(idiomasAoColumns, function(key, val) {if (typeof val === 'function') { return val + '';} return val;});              
	oneToMany("idiomasDataGrid", idiomasAoColumnsStr);
	$("#idiomasAdicionarBtn").button({icons: {primary: "ui-icon-plusthick"}, text: false}).click(
	function(){
		adicionarDoFormParaDatagrid("idiomas", "idiomasDataGrid");
		return false;
	});
	//-------------------------------------- //////////////////// ------------------------------
	
	
	
	
	//oneToMany Multiselect ----> ramoAtuacaos
	var aoColumnsDisponiveis = [
			{ "sTitle": "Id", 			 "mDataProp": "id",			"bVisible":false, "sType":"numeric","sDefaultContent": "" ,"columName": "ramo_atuacao.id" },
			{ "sTitle": "Versão",		 "mDataProp": "version",	"bVisible":false, "sType":"numeric","sDefaultContent": "","columName": "ramo_atuacao.version" },
			{ "sTitle": "Ramo Atuação", "mDataProp": "descricao", "sClass": "right","sDefaultContent": "" ,"columName": "ramo_atuacao.descricao"}
		];
	var aoColumnsDisponiveisStr = JSON.stringify(aoColumnsDisponiveis, function(key, val) {if (typeof val === 'function') { return val + '';} return val;});
	
	 
		
	var aoColumnsSelecionados = [
			{ "sTitle": "Id", 			 "mDataProp": "id",			"bVisible":false, "sType":"numeric","sDefaultContent": "" },
			{ "sTitle": "Versão",		 "mDataProp": "version",	"bVisible":false, "sType":"numeric","sDefaultContent": "" },
			{ "sTitle": "Ramo Atuação", "mDataProp": "descricao", "sClass": "right","sDefaultContent": "" }
		];
	var aoColumnsSelecionadosStr = JSON.stringify(aoColumnsSelecionados, function(key, val) {if (typeof val === 'function') { return val + '';} return val;});

	multiSelectBServerSideDataGrid("ramoAtuacaosDisponiveisDataGrid", "ramoatuacaos/bServerSide", "cursos.ramo_atuacao", " where true", "br.com.educa.modelo.curso.RamoAtuacao", aoColumnsDisponiveisStr, "ramoAtuacaosSelecionadasDataGrid",aoColumnsSelecionadosStr, "descricao");
	
		
	//-------------------------------------- //////////////////// ------------------------------
	
	//fiel upload foto 3x4
	FileAPIFoto = new FileAPI_Imagem(
        document.getElementById("fileListFoto"),
        document.getElementById("fileDropFoto"),
        document.getElementById("fotoArquivoConteudo"),
		"fotoArquivoDescricao",	
		"fotoArquivoNome",
		"fotoArquivoContentType",
		"fotoArquivoTamanho"
    );
    
    FileAPIFoto.init();
    
    var resetFoto = document.getElementById("resetFoto");
    resetFoto.onclick = FileAPIFoto.clearList;
	
	//fiel upload
	FileAPI = new FileAPI_PDF(
        document.getElementById("fileList"),
        document.getElementById("fileDrop"),
        document.getElementById("formacaoAcademicaArquivoConteudo"),
		"formacaoAcademicaArquivoDescricao",	
		"formacaoAcademicaArquivoNome",
		"formacaoAcademicaArquivoContentType",
		"formacaoAcademicaArquivoTamanho"
    );
    
    FileAPI.init();
    
    var reset = document.getElementById("reset");
    reset.onclick = FileAPI.clearList;

});//fim do onload


//function atualizar(formId, url, object){
//	$.ajax({
//		"type": "PUT",
//		"contentType": "application/json",
//		"dataType": "json",
//		"url": url,
//		"beforeSend": function(xhr,settings){
//			
//			if(!$("#"+formId).validationEngine('validate')){
//				xhr.abort();
//			}else{
//				$("#"+formId).block({message: "<img border='0' src='"+"img/ajax-loader.gif"+"'/> &nbsp;Atualizando...",
//					 css: { 'border': '0px',
//							'background': 'transparent',
//							'color': 'white'
//					      } 
//				});
//				settings.data = $.toJSON(object);
//			}
//		},
//		"error":trataErro,
//		"complete": function(){
//				$("#"+formId).unblock();
//				$("#"+formId).validationEngine("hide");
//		},
//		"success": function(){
//			
////			for(var i=0; i< object.formacoesAcademicas; i++){
//				
//               var xhrUpload = new XMLHttpRequest();
//                xhrUpload.open(    "POST",
//                            "arquivoes/savefile"
//                );
//                xhrUpload.setRequestHeader("Cache-Control", "no-cache");
//                xhrUpload.setRequestHeader("X-Requested-With", "XMLHttpRequest");
//                xhrUpload.setRequestHeader("X-File-Name", FileAPI.getFiles()[0].file.name);
//                var fileData = new FormData();
//                fileData.append("conteudo",FileAPI.getFiles()[0].file);
//                fileData.append("json",'{"tempName":"temporario"}');
//                xhrUpload.send(fileData);
//			
////			}
//			
//			showDialog("Sucesso","Registro atualizado com sucesso!");
//			window.location.hash='';
//			window.location.hash.replace('#', '');
//			if($("fieldset").length==1){
//				$("#"+formId).populate(null,{resetForm:true});
//			}else{
//				$("#"+formId).formwizard("reset");
//			}
//		}
//	 });
//	 
//}

function popular(){
    var registro = $("#"+$("form").attr("id")).formParams(false);
    //oneToMany formacaoAcademica
    delete registro.formacaoAcademica;
    registro.formacoesAcademicas = serializarDataGrid("formacaoAcademicaDataGrid");
    //oneToMany experienciaProfissional
    delete registro.experienciaProfissional;
    registro.experienciasProfissional = serializarDataGrid("experienciaProfissionalDataGrid");
    //oneToMany experienciaProfissional
    delete registro.publicacaoCientifica;
    registro.publicacoesCientificas = serializarDataGrid("publicacaoCientificaDataGrid");
    //oneToMany idiomas
    delete registro.idiomas;
    registro.idiomas = serializarDataGrid("idiomasDataGrid");
    //oneToMany ramoAtuacaos
    registro.ramoAtuacaos = serializarDataGrid("ramoAtuacaosSelecionadasDataGrid");
    
    
	$("select").each(function(){
		try{ 
			eval("registro."+$(this).attr("id")+" = findDataId(registro."+$(this).attr("id")+".id, $(\"#"+$(this).attr("id")+"\").get(0).dataSource);");
		}catch(e){}
	});
	
	
	//file upload
	var uploadArray = [];
	var contador=0;
	for(var i =0; i< registro.formacoesAcademicas.length;i++){
		if(registro.formacoesAcademicas[i].arquivo.conteudo!=null){
        	var file = new Object();
        	file.arquivo = registro.formacoesAcademicas[i].arquivo.conteudo;
        	file.nomeVariavel =  "conteudo";
    		delete registro.formacoesAcademicas[i].arquivo.conteudo;
    		uploadArray[contador]=file;
    		contador++;
		}
    }
    
    //foto upload
    var fileFoto = new Object();
    if(FileAPIFoto.getFiles().length>0){
		fileFoto.arquivo = FileAPIFoto.getFiles()[0].file;
    }
	fileFoto.nomeVariavel =  "foto";
    uploadArray[uploadArray.length] = fileFoto;
    delete registro.foto.conteudo;
    
    registro.uploadArray = uploadArray;
	
	return registro;
}

function preencherFormulario(data){
			var idiomas = data.idiomas;
			delete data.idiomas;
			var formacoesAcademicas = data.formacoesAcademicas;
			delete data.formacoesAcademicas;
			var experienciasProfissional = data.experienciasProfissional;
			delete data.experienciasProfissional;
			var publicacoesCientificas = data.publicacoesCientificas;
			delete data.publicacoesCientificas;
			var ramoAtuacaos = data.ramoAtuacaos;
			delete data.ramoAtuacaos;
			$("#"+$("form").attr("id")).populate( data,{resetForm:true});
			$("#estadoNascimento").val(data.naturalidade.estado.id);
			loadToComboBoxCallBack("#naturalidade","municipios/combo/nome?class=br.com.educa.modelo.publico.Municipio&methodName=findMunicipiosByEstado&estado="+data.naturalidade.estado.id,'nome',function(){$("#naturalidade").val(data.naturalidade.id);});
			$("#estadoResidencial").val(data.municipioResidencial.estado.id);
			loadToComboBoxCallBack("#municipioResidencial","municipios/combo/nome?class=br.com.educa.modelo.publico.Municipio&methodName=findMunicipiosByEstado&estado="+data.municipioResidencial.estado.id,'nome',function(){$("#municipioResidencial").val(data.municipioResidencial.id);});
			loadToComboBoxCallBack("#graduacaoCargo","graduacaocargoes/combo/nome?class=br.com.educa.modelo.publico.GraduacaoCargo&methodName=findGraduacaoCargoesByRamoSegurancaPublica&ramoSegurancaPublica="+data.graduacaoCargo.id,'nome',function(){$("#graduacaoCargo").val(data.graduacaoCargo.id);});
			$("#formacaoAcademicaDataGrid").dataTable().fnAddData(formacoesAcademicas);
			$("#experienciaProfissionalDataGrid").dataTable().fnAddData(experienciasProfissional);
			$("#publicacaoCientificaDataGrid").dataTable().fnAddData(publicacoesCientificas);
			$("#idiomasDataGrid").dataTable().fnAddData(idiomas);
			$("#ramoAtuacaosSelecionadasDataGrid").dataTable().fnAddData(ramoAtuacaos);
			if(data.foto!=null){
				$("#divFoto").html('<img id="foto3x4" width="114px" height="151px" src="arquivoes/showdoc/'+data.foto.id + '" alt="sua foto" style="display: block; border: 1px double #DDDDDD">')
			}
			
}